# 多阶段构建：第一阶段 - 构建应用
FROM node:18 AS builder

# 设置工作目录
WORKDIR /app

# 复制 package 文件
COPY package*.json ./

# 安装 pnpm
RUN npm install -g pnpm

# 复制源代码（包含所有文件）
COPY . .

# 检查并处理 lockfile 情况
RUN if [ ! -f "pnpm-lock.yaml" ]; then \
        echo "⚠️ pnpm-lock.yaml 不存在，将生成新的 lockfile" && \
        pnpm install --no-frozen-lockfile --no-optional; \
    else \
        echo "✅ 使用现有的 pnpm-lock.yaml" && \
        pnpm install --frozen-lockfile --no-optional || pnpm install --no-frozen-lockfile --no-optional; \
    fi

# 为 Alpine Linux 安装额外的 Rollup 依赖
RUN pnpm add @rollup/rollup-linux-x64-musl --save-dev || echo "无法安装 rollup musl 支持，继续构建"

# 清理缓存以节省内存
RUN pnpm store prune

# 设置 Vite 环境变量（从 .env.production 读取）
ENV VITE_APP_TITLE="AI答题分析平台"
ENV VITE_APP_ENV="production"
ENV VITE_APP_CONTEXT_PATH="/"
ENV VITE_APP_MONITOR_ADMIN="/admin/applications"
ENV VITE_APP_SNAILJOB_ADMIN="/snail-job"
ENV VITE_APP_BASE_API="/prod-api"
ENV VITE_BUILD_COMPRESS="gzip"
ENV VITE_APP_PORT="80"
ENV VITE_APP_ENCRYPT="true"
ENV VITE_APP_RSA_PUBLIC_KEY="MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=="
ENV VITE_APP_RSA_PRIVATE_KEY="MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE="
ENV VITE_APP_CLIENT_ID="e5cd7e4891bf95d1d19206ce24a7b32e"
ENV VITE_APP_WEBSOCKET="false"

# 确保环境文件存在
RUN echo "Checking environment files:" && ls -la .env*

# 显示设置的环境变量
RUN echo "VITE Environment Variables:" && env | grep VITE

# 构建应用（增加内存限制）
ENV NODE_OPTIONS="--max-old-space-size=4096"
RUN pnpm run build:prod

# 验证构建结果
RUN echo "Build completed. Checking dist folder:" && ls -la dist/

# 第二阶段 - 生产环境
FROM nginx:alpine

# 删除默认的 nginx 配置
RUN rm /etc/nginx/conf.d/default.conf

# 复制自定义 nginx 配置
COPY nginx.conf /etc/nginx/conf.d/

# 从构建阶段复制构建产物
COPY --from=builder /app/dist /usr/share/nginx/html

# 暴露端口
EXPOSE 2380

# 启动 nginx
CMD ["nginx", "-g", "daemon off;"]
